package com.youdianda.service.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youdianda.entity.YddAdvpos;
import com.youdianda.entity.YddLink;
import com.youdianda.mapper.YddLinkMapper;
import com.youdianda.result.PageResult;
import com.youdianda.result.Result;
import com.youdianda.service.IYddLinkService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.youdianda.vo.YddLinkListVO;
import io.lettuce.core.Limit;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author sdy
 * @since 2023-05-15
 */
@Service
@Transactional
public class YddLinkServiceImpl extends ServiceImpl<YddLinkMapper, YddLink> implements IYddLinkService {

    @Autowired
    private YddLinkMapper YddLinkMapper;

    /**
     * 分页查询
     * @param page
     * @param limit
     * @param type
     * @return
     */
    @Override
    public Result getYddLinkList(Integer page, Integer limit, Integer type) {

        Page<YddLink> pageYddLink = new Page<>();  //<YddLink>这个是要查的单表

        pageYddLink.setSize(limit);             //limit 前端给的数据，就叫这个名字
        pageYddLink.setCurrent(page);           //page  前端给的数据，就叫这个名字


        Page<YddLink> yddLinkPage = this.page(pageYddLink);     // yddLinkPage  要查的表，名字，加个page



        //2 封装pageResult
        PageResult pageResult = new PageResult();
        pageResult.setData( yddLinkPage.getRecords() );          // yddLinkPage  要查的表，名字，加个page，上面封装的
        pageResult.setPageSize(limit);
        pageResult.setCurrentPage(page);
        pageResult.setCount((int) yddLinkPage.getTotal());         // yddLinkPage  要查的表，名字，加个page，上面封装的

        int totalPage = pageResult.getCount() / pageResult.getPageSize() + 1;
        pageResult.setTotalPages(totalPage);
        return Result.success(pageResult);

    }

    /**
     * 修改
     * @param yddLin
     * @return
     */
    @Override
    public Result postYddLinkUpdate(YddLinkListVO yddLin) {


        YddLink yddLink = new YddLink();
        BeanUtils.copyProperties(yddLin,yddLink);

       YddLinkMapper.update(yddLink,Wrappers.<YddLink>lambdaQuery().eq(YddLink::getId,yddLin.getId()));

        return Result.success();
    }

    /**
     * 修改时查询
     * @param id
     * @return
     */
    @Override
    public Result getYddLinkRowInfo(Integer id) {

        YddLink yddLink = YddLinkMapper.selectById(id);

        return Result.success(yddLink);
    }

    /**
     * 删除
     * @param id
     * @return
     */

    @Override
    public Result getYddlinkDel(Integer id) {

        YddLinkMapper.deleteById(id);
        return Result.success();
    }

    /**
     * 添加
     * @param yddLinkListVO
     * @return
     */
    @Override
    public Result postYddlinkadd(YddLinkListVO yddLinkListVO) {


        YddLink yddLink = new YddLink();
        BeanUtils.copyProperties(yddLinkListVO,yddLink);
        save(yddLink);
        return Result.success();

    }
}
